#include "timerbtn.h"
#include <QMouseEvent>
#include <QDebug>

TimerBtn::TimerBtn(QWidget *parent):QPushButton(parent),_counter(10)
{
    _timer = new QTimer(this);          //创建一个计时器


    //连接事件，启动一个1s的计时器，过了1s就会发出一个timeout信号，通过这个信号
    //触发一个动作
    connect(_timer, &QTimer::timeout, [this](){
        _counter--; //触发一次，代表已经过了一秒
        if(_counter <= 0){
            _timer->stop(); //最终减少到0，那就停止计时器，并且重新使按钮是能
            _counter = 10;
            this->setText("获取");
            this->setEnabled(true);
            return;
        }

        //显示
        this->setText(QString::number(_counter));
    });
}

TimerBtn::~TimerBtn()
{
    _timer->stop();
}

void TimerBtn::mouseReleaseEvent(QMouseEvent *e)
{
    if (e->button() == Qt::LeftButton) {
        // 在这里处理鼠标左键释放事件
        qDebug() << "MyButton was released!";
        this->setEnabled(false);
        this->setText(QString::number(_counter));

        //启动一个定时器，1000s发射一个timeout事件
        //之后立即开启一个新的计时器，从而持续运行下去，不会停止
        _timer->start(1000);
        emit clicked();
    }
    // 调用基类的mouseReleaseEvent以确保正常的事件处理（如点击效果）
    QPushButton::mouseReleaseEvent(e);
}
